package loon.srpg;

import loon.core.LSystem;
import loon.core.graphics.LFont;

/**
 * 
 * 游戏常量：文字设定，默认地形，AI
 * <p>默认地形具体的效果实现查看{@link loon.srpg.field.SRPGFieldElements#ELEMENT_TYPES}
 * <p>AI由基本AI组合，可参照
 *
 */
public interface SRPGType {
	/**选项-战斗主菜单：回合结束，交战双方，设定，重新开始。4列分别是四种语言*/
	final static String[][] BACK_MENU_1 = { { "回合结束", "决斗双方", "决斗设定", "重新决斗" },
			{ "回合結束", "交戰雙方", "設定", "重新開始" },
			{ "ターンの终わり", "紛争当事者", "設定", "ゲームを再起动します" },
			{ "Turn the End", "Warring parties", "Set", "Restart" } };
	/**
	 * 选项-主菜单中的设定："地图棋盘", "敌我标识", "行动完毕标识", "敌方行动显示"
	 */
	final static String[][] BACK_MENU_2 = {
			{ "地图棋盘", "敌我标识", "行动完毕标识", "敌方行动显示" },
			{ "地圖棋盤", "敵我標識", "行動完畢標識", "敵方行動顯示" },
			{ "地図グリッド", "識別敵か味方", "表示の終了のアクション", "表示の敵のアクション" },
			{ "Map Grid", "Difference", "Action completed", "Enemy action" } };
	/**
	 * 选项-角色战斗菜单："战斗方式", "道具", "转换方向", "属性", "行动结束"
	 */
	final static String[][] BATTLE = {
			{ "战斗方式", "道具", "转换方向", "属性", "行动结束" },
			{ "戰鬥方式", "道具", "轉換方向", "屬性", "行動結束" },
			{ "戦闘の方法", "どうぐ", "方向転換", "ステータスウィンドウ", "ターンの终わり" },
			{ "Skills", "Item", "Change direction", "Status", "Action the End" } };
	/**
	 * 选项-传送："目标内魔法对象不存在", "指定移动对象", "请指定传送目标", "确定传送", "取消传送"
	 */
	final static String[][] STRING_CARRY = {
			{ "目标内魔法对象不存在", "指定移动对象", "请指定传送目标", "确定传送", "取消传送" },
			{ "目標內魔法對象不存在", "指定移動對象", "請指定傳送目標", "確定傳送", "取消傳送" },
			{ "この魔法の対象となるキャラクターが存在しません", "キャラクターの移動先を指定してください",
					"転送オブジェクトを指定してください", "指定位置に移動する", "移動しない" },
			{ "Target object does not exist", "Moving objects specified",
					"Move the character selection", "Agreed to move",
					"Do not agree to move" } };
	/**
	 * 提示-战斗结果："你的战斗胜利了 !", "你的战斗失败了 !"
	 */
	final static String[][] WINNER_LOSER = { { "你的战斗胜利了 !", "你的战斗失败了 !" },
			{ "你的戰鬥勝利了 !", "你的戰鬥失敗了 !" }, { "敵を殲滅しました !", "敵に倒されてしまいました !" },
			{ "You're a Winner !", "You're a Loser !" } };
	/**
	 * 选项-选择："确定选择", "放弃选择"
	 */
	final static String[][] YES_NO = { { "确定选择", "放弃选择" }, { "確定選擇", "放棄選擇" },
			{ "選択を確認するには", "選択した項目をあきらめる" }, { "I Agree", "Does not Agree" } };
	/**
	 * 选项-显示设定："显示", "不显示"
	 */
	final static String[][] DISPLAY = { { "显示", "不显示" }, { "顯示", "不顯示" },
			{ "設定する", "設定しない" }, { "Display", "Not on Display" } };
	/**
	 * 提示："当前选项无法使用"
	 */
	final static String[][] NO_SUPPORT = { { "当前选项无法使用" }, { "當前選項無法使用" },
			{ "現在のオプションは使用できません" }, { "The current option is not available" } };
	/**
	 * 提示："您选择的目标不能操作"
	 */
	final static String[][] TOUCH_NO_SUPPORT = { { "您选择的目标不能操作" },
			{ "您選擇的目標不能操作" }, { "このアビリティの範囲内にターゲットが存在しません" },
			{ "The target of your choice can not be operated" } };
	/**
	 * 提示-回合："是否中止回合?", "是否重新开始?"
	 */
	final static String[][] STOP = { { "是否中止回合?", "是否重新开始?" },
			{ "是否中止回合?", "是否重新開始?" }, { "本当にフェイズを終了しますか?", "再起動するかどうか?" },
			{ "End of turn ?", "Restart ?" } };

	// 默认文字
	final static public LFont DEFAULT_FONT = LFont.getFont(LSystem.FONT_NAME, 0, 20);

	final static public LFont DEFAULT_BIG_FONT = LFont.getFont(LSystem.FONT_NAME, 1, 35);

	// ---- 默认的地形 ----//
	/**
	 * 地形：平地
	 */
	public final static int ELEMENT_FLAT = 0;

	/**
	 * 地形：山丘
	 */
	public final static int ELEMENT_HILL = 1;

	/**
	 * 地形：耕地
	 */
	public final static int ELEMENT_FARMLAND = 2;

	/**
	 * 地形：荒野
	 */
	public final static int ELEMENT_WILDERNESS = 3;

	/**
	 * 地形：沼泽，减速
	 */
	public final static int ELEMENT_SWAMP = 4;

	/**
	 * 地形：河水，非特殊状态(MOVETYPE=WATER)无法穿越
	 */
	public final static int ELEMENT_RIVER = 5;

	/**
	 * 地形：海，非特殊状态无法穿越
	 */
	public final static int ELEMENT_SEA = 6;

	/**
	 * 地形： 雪，减速
	 */
	public final static int ELEMENT_SNOW = 7;

	/**
	 * 地形：冰山，减速
	 */
	public final static int ELEMENT_ICEBERGW = 8;

	/**
	 * 地形：沙地，减速
	 */
	public final static int ELEMENT_SANDY = 9;

	/**
	 * 地形：沙丘，减速
	 */
	public final static int ELEMENT_DUNE = 10;

	/**
	 * 地形：墙
	 */
	public final static int ELEMENT_WALL = 11;

	/**
	 * 地形：岩石
	 */
	public final static int ELEMENT_ROCK = 12;

	/**
	 * 地形：宫殿
	 */
	public final static int ELEMENT_PALACE = 13;

	/**
	 * 地形：城墙
	 */
	public final static int ELEMENT_CITYWALL = 14;

	/**
	 * 地形：泥潭，减速
	 */
	public final static int ELEMENT_MIRE = 15;

	/**
	 * 地形：室内
	 */
	public final static int ELEMENT_INDOOR = 16;

	/**
	 * 地形：堤坝
	 */
	public final static int ELEMENT_DAM = 17;

	/**
	 * 地形：道路
	 */
	public final static int ELEMENT_ROAD = 18;

	/**
	 * 地形：湿地
	 */
	public final static int ELEMENT_WETLAND = 19;

	/**
	 * 地形：烈火，进入就死
	 */
	public final static int ELEMENT_AGNI = 20;

	/**
	 * 地形：核污染，进入就死
	 */
	public final static int ELEMENT_NUCLEAR = 21;
	// ---- 地形结束 ----//

	// ---- 默认的AI ----//
	/**
	 * 基本AI：普通的AI运算
	 */
	public static final int TYPE_NORMAL = 0;

	/**
	 * 基本AI：什么也不做，等待下一个处理
	 */
	public static final int TYPE_WAIT = 1;

	/**
	 * 基本AI：牧师类职业AI运算
	 */
	public static final int TYPE_PRIEST = 2;

	/**
	 * 基本AI:法师类职业AI运算
	 */
	public static final int TYPE_WIZARD = 3;

	/**
	 * 基本AI:不进行移动
	 */
	public static final int TYPE_NOMOVE = 4;

	/**
	 * 基本AI:采取逃避策略
	 */
	public static final int TYPE_ESCAPE = 5;

	/**
	 * 基本AI:牧师类职业AI运算(选择较低生命值的对象进行技能释放)
	 */
	public static final int TYPE_PRIEST_LOWER = 6;

	/**
	 * AI:通常，普通的AI计算，以普通攻击为主
	 */
	public static final int NORMAL[] = { TYPE_NORMAL };

	/**
	 * AI:待机，什么也不做，等待下一个处理
	 */
	public static final int WAIT[] = { TYPE_WAIT };

	/**
	 * AI:牧师模式，以普通治疗为主
	 */
	public static final int PRIEST[] = { TYPE_PRIEST };

	/**
	 * AI:巫师模式，以魔法攻击为主
	 */
	public static final int WIZARD[] = { TYPE_WIZARD };

	/**
	 * AI:不动明王模式(原地不动,但依旧有攻击等行为)
	 */
	public static final int NOMOVE[] = { TYPE_NOMOVE };

	/**
	 * AI:逃往模式(回避战斗,疯狂的往边缘移动)
	 */
	public static final int ESCAPE[] = { TYPE_ESCAPE };

	/**
	 * AI:牧师模式(以救死为要务，选择较低生命值的对象进行技能释放)
	 */
	public static final int PRIESTLOWER[] = { TYPE_PRIEST_LOWER };

	/**
	 * AI:魔战士模式(一回合魔法为主,一回合攻击为主)
	 */
	public static final int WIZARD_NORMAL[] = { TYPE_WIZARD, TYPE_NORMAL };

	/**
	 * AI:魔法专精模式(一回合以救死为要务的治疗,一回合攻击魔法)
	 */
	public static final int PRIEST_WIZARD[] = { TYPE_PRIEST_LOWER, TYPE_WIZARD };

	/**
	 * AI:僧侣战士模式(一回合攻击,一回合普通治疗)
	 */
	public static final int NORMAL_PRIEST[] = { TYPE_PRIEST, TYPE_NORMAL };

	/**
	 * AI:混合模式(一回合攻击,一回合普通治疗,一回合魔法)
	 */
	public static final int NORMAL_PRIEST_WIZARD[] = { TYPE_NORMAL,
			TYPE_WIZARD, TYPE_PRIEST };

	/**
	 * AI:顽抗模式(不动,物理攻击,魔法攻击,补血,逃跑……)
	 */
	public static final int STUBBORNLYRESIST[] = { TYPE_NOMOVE, TYPE_NORMAL,
			TYPE_WIZARD, TYPE_PRIEST, TYPE_ESCAPE };

	/**
	 * AI:女祭司模式(传统SRPG游戏中很常见的,一边补血一边逃跑那种……)
	 */
	public static final int[] PRIESTESS = { TYPE_PRIEST, TYPE_ESCAPE };

	// ---- AI结束 ----//

	// ---- 默认的地图显示方式 ----//
	public static final int FIELD_NORMAL = 0;

	public static final int FIELD_BIGMAP = 1;

	public static final int FIELD_BLEND = 2;

	// ---- 地图结束 ----//

	// ---- 角色重要度 ----//

	public static final int LEADER_NO = 0;

	public static final int LEADER_NORMAL = 1;

	public static final int LEADER_MAIN = 2;

	// ---- 移动方向 ----//

	public static final int MOVE_DOWN = 0;

	public static final int MOVE_LEFT = 1;

	public static final int MOVE_RIGHT = 2;

	public static final int MOVE_UP = 3;

	// ---- 战斗进程处理 ----//

	public static final int PROC_ENEMY = -1;

	public static final int PROC_NORMAL = 0;

	public static final int PROC_MOVEVIEW = 1;

	public static final int PROC_MOVING = 2;

	public static final int PROC_COMMAND = 3;

	public static final int PROC_CHANGEVECTOR = 4;

	public static final int PROC_ABILITYSELECT = 5;

	public static final int PROC_ABILITYTARGET = 6;

	public static final int PROC_TARGETSURE = 7;

	public static final int PROC_ATTACK = 8;

	public static final int PROC_COUNTER = 9;

	// ---- 允许攻击的目标类型 ----//

	public static final int TARGET_ENEMY = 0;

	public static final int TARGET_FRIEND = 1;

	public static final int TARGET_ALL = 2;

	// ---- 技能类型 ----//
	/**
	 * 普通攻击
	 */
	public static final int GENRE_ATTACK = 0;
	/**
	 * 普通恢复
	 */
	public static final int GENRE_RECOVERY = 1;
	/**
	 * 辅助技能
	 */
	public static final int GENRE_HELPER = 2;
	/**
	 * 治疗技能
	 */
	public static final int GENRE_CURE = 3;
	/**
	 * 魔法伤害
	 */
	public static final int GENRE_MPDAMAGE = 4;
	/**
	 * 魔法恢复
	 */
	public static final int GENRE_MPRECOVERY = 5;
	/**
	 * 全局伤害
	 */
	public static final int GENRE_ALLDAMAGE = 6;
	/**
	 * 全局恢复
	 */
	public static final int GENRE_ALLRECOVERY = 7;

	// ---- 是否允许反击 ----//
	/**
	 * 反击
	 */
	public static final int SELECTNEED_YES = 0;
	/**
	 * 不反击
	 */
	public static final int SELECTNEED_NO = 1;

}
